package com.ruoyi.yl.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author jiabao
 * @since 2025-06-25
 */
@Data
@Builder
@TableName("business_users")
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "Users对象", description = "用户信息表")
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID，主键自增
     */
    @ApiModelProperty("用户ID，主键自增")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 微信openid
     */
    @TableField("openid")
    @ApiModelProperty("微信openid")
    private String openid;

    /**
     * 用户昵称
     */
    @TableField("nickname")
    @ApiModelProperty("用户昵称")
    private String nickname;

    /**
     * 用户头像URL
     */
    @TableField("avatar_url")
    @ApiModelProperty("用户头像URL")
    private String avatarUrl;

    /**
     * 用户手机号
     */
    @TableField("phone")
    @ApiModelProperty("用户手机号")
    private String phone;

    /**
     * 用户积分
     */
    @TableField("points")
    @ApiModelProperty("用户积分")
    private Integer points;

    /**
     * 信用积分(默认100)
     */
    @TableField("credit_score")
    @ApiModelProperty("信用积分(默认100)")
    private Integer creditScore;

    /**
     * 1-正常 0-禁用
     */
    @TableField("status")
    @ApiModelProperty("1-正常 0-禁用")
    private Integer status;

    /**
     * 注册时间（自动设置）
     */
    @TableField("created_at")
    @ApiModelProperty("注册时间（自动设置）")
    private LocalDateTime createdAt;

    /**
     * 最后更新时间（需要业务明确赋值）
     */
    @TableField("updated_at")
    @ApiModelProperty("最后更新时间（最后登陆时间）")
    private LocalDateTime updatedAt;



//    @TableField("ip")
//    @ApiModelProperty("最后登陆ip")
//    private String ip;


    public LoginUser.WxUsers getWxUser() {
        LoginUser.WxUsers wxUsers = LoginUser.WxUsers.builder().build();
        BeanUtils.copyProperties(this, wxUsers);
        return wxUsers;
    }
}
